/* Tinh tich ma tran */
#include <stdio.h>

#define MAX 10

void in_ma_tran(int A[MAX][MAX], int n, int m, char id)
{
  int i, j;

  printf("\nMa tran %c : ", id);
  for (i=0; i<n; i++)
  {
    printf("\n");
    for(j=0; j<m; j++)
      printf("%3d ",A[i][j]);
  }
}

void nhap_so_nguyen(int *value, int min, int max, char id)
{
  do {
    printf("\nNhap gia tri %c (trong khoang %d den %d)", id, min, max);
    scanf("%d", value);
  } while (*value < min || *value > max);
}

void main()
{
  int A[MAX][MAX], B[MAX][MAX], C[MAX][MAX], n, m, l, i, j, k;

  nhap_so_nguyen(&n, 2, MAX, 'n');
  nhap_so_nguyen(&m, 2, MAX, 'm');
  nhap_so_nguyen(&l, 2, MAX, 'l');
  printf("\nNhap ma tran A : ");
  for (i=0; i<n; i++)
    for (j=0; j<m; j++)
    {
      printf("A[%d,%d] = ", i, j);
      scanf("%d", &(A[i][j]));
    }
  printf("\nNhap ma tran B : ");
  for (i=0; i<m; i++)
    for (j=0; j<l; j++)
    {
      printf("B[%d,%d] = ", i, j);
      scanf("%d", &(B[i][j]));
    }
  in_ma_tran(A, n, m, 'A');
  in_ma_tran(B, n, m, 'B');
  for (i=0; i<n; i++)
    for (j=0; j<l; j++)
    {
      C[i][j] = 0;
      for (k=0; k<m; k++)
        C[i][j] += A[i][k] * B[k][j];
    }
  in_ma_tran(C, n, m, 'C');
  getch();
}